iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0

說完了類別,今天要開始往方法(Method)或函數(Function)說起了。

因為語言特性的關係,有些叫method,有些叫function,有些叫procedure,它們可能都有一些差異,但我就不分了,全部都用方法稱呼。

命名規則

方法的命名的要求很分歧:C#的命名會用PascalCase,因為他是一個公開的介面,在C#裡只要你看得到的東西:方法啊,類別啊,屬性啊,任何只要他的存取修飾子是public,他就會用PascalCase。
https://ithelp.ithome.com.tw/upload/images/20200914/20111458JtB8scchIC.png

而C++, Java, python或Javascript則承襲了C語言,會用camelCase
https://ithelp.ithome.com.tw/upload/images/20200914/20111458tO5JO6i0ex.png

方法的命名會和主方法main對齊,只要main是大寫就是PascalCase,小寫就是camelCase。
但人生都有例外,像golang,function是PascalCase或是camelCase有不同的意義。所以還是那句話:團隊有共識就好。

動詞

既然是方法,方法的名稱就一定是動詞,例如

    public void Login();

但有些東西還是要注意

  1. 不要把類別名稱前綴在動作前面
    有些人喜歡在動作前面把類別的名稱帶進去,例如
public class User{
    public bool UserRegister(UserInfo userInfo);
}

但其實是不必要的,因為當我們在使用類別時,自然就會把他帶出來。(如果物件的命名得宜的話)

    User newUser = new User();
    newUser.Register(userInfo);

所以不需要把類別名稱前綴在方法裡。
2. 不要同一個動作有太多種不同的字
如果取資料己經是用get,那就應該全部都用get,不要突然用fetch或retrieve。這在前面己經有說過了就不再描述。
3. 不要用一個字形容不同的動作
如果get是指抓資料,那就應該不能用來描述其他動作(例如得到獎勵)。這在前面己經有說過了就不再描述。
4. 注意詞性
大部份的方法,使用的都是現在式,而且是以方法本身描述的現在式。但如果去看SDK的話,有很少數的情況會用到特別的時態,例如檢查檔案或目錄是否存在的方法是

    File.exists();  //Java, Python
    //or
    File.IsExists();  //C#

其實不難理解啦!對物件本身來說,檔案系統是第三者,所以會在方法加s。

有其他團隊是用不同的命名規則嗎?像VB不分大小寫這種?能分享一下你們的經驗嗎?


上一篇
Day12 - [代名詞四] Magic Numbers
下一篇
Day 14 - [動詞二] 測試
系列文
邁向專業軟體工程師必修的英文課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言